<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        /* 
            js中对象
                键值对--key--value
                    键-属性名--是字符串
                    值-可以是任何类型,也可以是一个函数
                创建方式有两种：
                    1- 字面量方式创建对象 var obj = {
                                属性名:属性值,
                                方法名：函数
                            }
                        字面量写法，本质是构造函数创建对象的简写
                    2-  构造函数创建
                        构造函数是一种特殊的函数-专门用来的创建对象        

        */

        // 1-字面量创建
        var obj = {
            // 属性--本身有什么东西
            name: '小张',
            age: 18,
            // "name": '
            //方法--会什么 ---就是一个函数
            sing: function (songName) {
                console.log('歌名', songName);
                console.log('开始清清嗓子');
                console.log('开始唱歌');
                // return
            }


        }
        console.log(obj.name);
        // 调用对象的方法
        obj.sing('李白');

        var fn = function () { }
        // 函数应不是一种新的类型，typeof fn 得到function字符串
        // 函数也是一种对象（记住）
        console.log(typeof fn);//function


        // 2- 内置的构造函数
        // **构造函数是一种特殊的函数
        // --一般情况下 首字母大写
        // --专门是用来创建对象，调用的时候前面需要加new
        var obj2 = new Object();//Object 创建一个没有特别属性和方法的对象
        // var obj2 = {};//字面量写法，本质是构造函数创建对象的简写
        // 给对象添加属性
        obj2.name = 'zhangsan';
        obj2.age = 19;
        //修改属性
        obj2.name = 'lisi';
        //获取属性
        console.log(obj2.name);
        // 增删改查--CRUD

        // 删除name属性
        delete obj2.name;

        // 添加了一个方法
        obj2.run = function () {
            console.log('对象跑');
        }
        // 覆盖原来的
        obj2.run = function () {
            console.log('2222');
        }
        // 调用方法
        obj2.run()
        // 删除方法
        // delete obj2.run;

        console.log(obj2);




        // Array 是我们今天的要学的一个构造函数，这个构造函数创建的对象，是专门用来存储数据的
        // var obj3 = new Array();
        // 后面 三天，每天都会学一个构造函数，使用构造函数就可以创建一个对象
        // 这个对象上会有很多方法，使用这些方法就会帮我们完成一些事情

        // 方法--》函数-功能-函数名-函数参数-函数的返回值



        // 1-对象内部也可以 存 函数（这个时候叫方法）
        // 2-对象 本质是用 构造函数创建
    </script>

</body>

</html>